Over the past decades computers have become one of the most important tools in modern society. Computers help create, manipulate and disseminate information essential to industrial, governmental and educational facilities throughout the world. In order to protect important information stored on computers (also referred to as nodes) from being unintentionally deleted, corrupted, or destroyed, many data backup systems have been developed to safeguard information stored in computer memory.
One technique developed to protect against data loss is data mirroring. Data mirroring essentially involves protecting stored information at a local storage device by making duplicate copies of the information at one or more remote storage devices. If some unfortunate circumstance causes information at the local storage device to be lost, the remote storage device can be used to recover the information. Generally, data mirroring schemes are configured to work in the background by copying local information automatically without user intervention. This helps ensure that the backup information is as current as possible without burdening the computer user.
Although data mirroring has proven a valuable defense against data loss, mirroring operations may nevertheless fail under certain conditions. Consider, for example, when a local storage device is upgraded to increase its storage capacity. Such storage expansion is common as computer technology rapidly advances each year. If the upgraded storage device is capable of storing more data than the remote storage device onto which data is mirrored, the mirroring relationship will fail when the remote device reaches its storage limit before the local storage device.
One way to avoid such data mirroring problems is for system administrators to double check whether changes to either the local or remote computers will cause adverse affects to the mirroring relationship before the changes are implemented. Although this solution works well for small computer networks, it generally becomes too difficult for administrators to check every system change for larger networks with hundreds of mirrored computers. Moreover, there may be events occurring in the system that the administrator is normally unaware but still affect data mirroring relationships.
Another solution is to provide mirroring memory that is much larger than local memory. This solution strives to assure that backup memory will not run out even if the local memory is expanded. Such an arrangement, however, typically results in a poor utilization of system resources and does not guarantee that mirroring memory will not run out in the future. Furthermore, this arrangement does not take into consideration other events in the computer system that may cause mirroring to fail. For example, a remote computer may have enough backup memory to mirror several local computers, but may run out of network bandwidth and therefore be unable to keep up with copy operations required to mirror local data. Thus, other events occurring in a computer mirroring system may require attention.